// Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:test/test.dart';

import '../../test_pub.dart';

void main() {
  test('activating a package from a custom pub server', () async {
    // The default pub server (i.e. pub.dev).
    final server = await servePackages();
    server.serve('baz', '1.0.0');

    // The custom pub server.
    final customServer = await startPackageServer();
    Map<String, dynamic> hostedDep(String name, String constraint) => {
          'hosted': {
            'url': customServer.url,
            'name': name,
          },
          'version': constraint,
        };

    customServer.serve('foo', '1.0.0', deps: {'bar': hostedDep('bar', 'any')});
    customServer.serve('bar', '1.0.0', deps: {'baz': 'any'});

    await runPub(
      args: ['global', 'activate', 'foo', '-u', customServer.url],
      silent: allOf([
        contains('Downloading bar 1.0.0...'),
        contains('Downloading baz 1.0.0...'),
        contains('Downloading foo 1.0.0...'),
      ]),
      output: contains('Activated foo 1.0.0'),
    );
  });
}
